import { createSlice, PayloadAction } from '@reduxjs/toolkit'
import type { RootState } from '../index'
// 为 slice state 定义一个类型
interface userStateType {
    userinfo: {
        adminname: string,
        checkedkeys: Array<any>,
        role: number,
        token: string
    }
}

// 使用该类型定义初始 state
const initialState: userStateType = {
    userinfo: {
        adminname: '',
        checkedkeys: [],
        role: 0,
        token: ''
    }
};

export const userSlice = createSlice({
    name: 'user',
    // `createSlice` 将从 `initialState` 参数推断 state 类型
    initialState,
    reducers: {

        // 使用 PayloadAction 类型声明 `action.payload` 的内容
        updateuserinfo: (state, action: PayloadAction<{
            adminname: '',
            checkedkeys: [],
            role: 0,
            token: ''
        }>) => {
            state.userinfo = action.payload    //  number 表示payload的值的类型
        }
    }
})

// 导出对应的修改state 数据的任务方法
export const { updateuserinfo } = userSlice.actions
// 选择器等其他代码可以使用导入的 `RootState` 类型
export default userSlice.reducer;




